package com.itzmn.newcode.offer;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @Author: 张梦楠
 * @Date: 2018/11/17 11:04
 * 简书：https://www.jianshu.com/u/d611be10d1a6
 * 码云：https://gitee.com/zhangqiye
 * @Description: 剑指Offer  查找字符串中第一个出现的唯一一个字符
 *
 *   思路：
 *    统计所有字符的出现次数，然后取出第一个是一的
 */
public class GetFirstHasOneChar {

    public static void main(String[] args) {

        new GetFirstHasOneChar().FirstNotRepeatingChar("");
    }

    public int FirstNotRepeatingChar(String str) {
        if (str.equals("")){
            return -1;
        }
        String[] split = str.split("");

        LinkedHashMap<String, Integer> map = new LinkedHashMap<>();

        for (int i=0;i<split.length;i++){
            map.put(split[i],map.get(split[i])==null?1:map.get(split[i])+1);
        }

        int j=-1;
        String i="";
        for (Map.Entry entry:map.entrySet()){
            if ((Integer)entry.getValue()==1){
                System.out.println(entry.getKey());
                i=(String) entry.getKey();
                break;
            }
        }

        for (int x=0;x<split.length;x++){
            if (split[x]==i){
                j=x;
                break;
            }
        }
        return j;
    }
}
